package servlet;

import util.StringUtil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.Arrays;

/**
 * @author MissChen
 * @date 2024年04月22日 15:51
 */
@WebServlet("/addEmp")
public class AddEmpServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        //获取表单提交的数据
        //request.getParameter(key)获取请求中的数据,key指的就是表单元素的name属性值


        // post请求，出现乱码
        // request.setCharacterEncoding("指定编码")
        // 告诉服务器，以什么样的编码对请求中的数据进行解析
        //设置编码时必须要在请求数据之前
        request.setCharacterEncoding("UTF-8");


        // get请求，出现乱码
        // 方式一:
        // tomcat7默认编码为ISO-8859-1
        // 需要将ISO-8859-1编码的中文换成我们所需要的编码的中文
        // 对于请求参数，可能存在无数个，很多都有可能存在乱码问题
        //对于这种情况，我们可以创建一个工具类转换


        // 方式二:更改服务器默认编码
        // 此时请求数据的解析是由服务器根据其编码进行解析的
        // 可以直接修改服务器的默认编码
        // 在端口号配置的标签的属性部分新增一个属性:URIEncoding="UTF-8"



        String name=request.getParameter("name");
        // name=new  String(name.getBytes("ISO-8859-1"),"UTF-8");
        String salary=request.getParameter("salary");
        String gender=request.getParameter("gender");
        String edu=request.getParameter("edu");
        // request.getParameterValues()用于获取服务器值为数组的场景，一般用于复选框
        String[] hobbies=request.getParameterValues("hobbies");

        // 1.根据页面创建对应的t_emp
        // 2.根据页面获取的数据执行JDBC的添加操作

        Connection conn=null;
        PreparedStatement ps=null;
        String url="jdbc:mysql://127.0.0.1:3306/web?useUnicode=true&characterEncoding=utf-8";
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn= DriverManager.getConnection(url,"root","root");

            String sql=new StringBuffer()
                    .append(" insert into ")
                    .append(" t_emp ")
                    .append(" (name,salary,gender,edu,hobbies) ")
                    .append(" values ")
                    .append(" (?,?,?,?,?) ")
                    .toString();
            ps=conn.prepareStatement(sql);
            ps.setString(1,name);
            ps.setDouble(2,Double.parseDouble(salary));
            ps.setString(3,gender);
            ps.setString(4,edu);
            ps.setString(5, StringUtil.arrayToString(hobbies));
            //执行DML操作
            ps.executeUpdate();

            // 3.返回响应信息，不管成功还是失败
            // out.println("<h1 style='color:green;'>恭喜您，添加成功</h1>");

            // 跳转到员工列表页
            // 2种方式:重定向、转发
            // 1.重定向
            response.sendRedirect("findAll");
            // response.sendRedirect("https://www.baidu.com");
            // response.sendRedirect("WEB-INF/test.jsp");
            // 2.转发
            // request.getRequestDispatcher("findAll").forward(request,response);
            // request.getRequestDispatcher("https://www.baidu.com").forward(request,response);
            // request.getRequestDispatcher("WEB-INF/test.jsp").forward(request,response);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            out.println("<h1 style='color:red;'>对不起，添加失败</h1>");
        } catch (SQLException e) {
            e.printStackTrace();
            out.println("<h1 style='color:red;'>对不起，添加失败</h1>");
        }finally {
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }


    }
}


